#include "vertex_queue.h"

vertex_queue::vertex_queue(int _size){
  vqsize = 1;
  while (vqsize < _size) vqsize <<= 1;
  vqueue = new int[vqsize];
  vqbeg = 0;
  vqend = 0;
}

vertex_queue::~vertex_queue(){
  delete[] vqueue;
}

void vertex_queue::push_vertex(int v){
  vqueue[vqend] = v;
  vqend = (vqend + 1) & (vqsize - 1);
}

const int vertex_queue::pop_vertex(){
  int res = vqueue[vqbeg];
  vqbeg = (vqbeg + 1) & (vqsize - 1);
  return res;
}

const bool vertex_queue::is_empty() const{
  return (vqbeg == vqend);
}